package www.albert.springMybatis.util;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * 获取单例 SqlSessionFactory 工厂对象 <br/>
 * 在整合包中提供了 SqlSessionFactory 的工厂Bean创建，所以这里不使用
 * 
 * @author zhel
 * 2018年6月28日
 */
public class SqlSessionFactoryUtil {
    private SqlSessionFactoryUtil() {
    }

    // 使用静态内部类实现单例
    private static class Instance {
        private static SqlSessionFactory sqlSessionFactory = null;
        static {
            String resource = "mybatis-config.xml";
            Reader reader;
            try {
                reader = Resources.getResourceAsReader(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    /**
     * 获取实例对象
     * 
     * @return
     */
    public SqlSessionFactory getSingleInstance() {
        return Instance.sqlSessionFactory;
    }
}
